﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DataLayer.Database;
using DataLayer.Class;
using DataLayer;

namespace WinProgProject2
{
    public partial class MusteriIslemleri : Form
    {
        ErrorLogService.Service1Client sv = new ErrorLogService.Service1Client();
        private RezervasyonIslemleri rezervasyonIslemleri;
        private bool yeniKayit = false;
        public MusteriIslemleri()
        {
            InitializeComponent();
        }

        public MusteriIslemleri(RezervasyonIslemleri rez)
        {
            InitializeComponent();
            this.rezervasyonIslemleri = rez;

            this.ekleToolStripButton.Enabled = false;
            this.guncelleToolStripButton.Enabled = false;
            this.silToolStripButton.Enabled = false;
            gbxInput.Visible = false;

            groupBox1.Height = 504;
            lvMusteriler.Height = 500;
            btnSec.Visible = true;

            
        }

        private void btnKaydet_Click(object sender, EventArgs e)
        {

            try
            {

                if (txtMAdi.Text == "" || txtMSoyad.Text == "" || txtTelNo.Text == "")
                    throw new Exception("Lütfen tüm alanları doldurunuz.");

                if (yeniKayit)
                {
                    new Musteri(txtMAdi.Text,txtMSoyad.Text,txtTelNo.Text,cmbOncelik.SelectedItem as Oncelik).ekle();
                }
                else
                {
                    new Musteri((lvMusteriler.SelectedItems[0].Tag as Musteri).MusteriID,txtMAdi.Text, txtMSoyad.Text, txtTelNo.Text, cmbOncelik.SelectedItem as Oncelik).guncelle();
                }
                lvDoldur("",-1);
                ekleToolStripButton_Click(null,null);
            }
            catch (Exception ex)
            {
                MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if(yeniKayit)
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 1, "Müşteri İşlemleri");
                else sv.errorEkle(Session.kullaniciKodu, ex.Message, 2, "Müşteri İşlemleri");
            }
        }

        private void MusteriIslemleri_Load(object sender, EventArgs e)
        {
            try
            {
                gbxInput.Enabled = false;

                filtreStripComboBox.SelectedIndex = 0;
                foreach (Oncelik o in MusteriDB.TumOncelikleriCek())
                    cmbOncelik.Items.Add(o);

                if (cmbOncelik.Items.Count > 0)
                    cmbOncelik.SelectedIndex = 0;

                lvDoldur("", -1);
            }
            catch (Exception ex)
            {
                MessageBox.Show(null,ex.Message + "("+ex.InnerException+")","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 6, "Müşteri İşlemleri");
            }
                
        }

        private void lvDoldur(string aranan, int kriter)
        {
            lvMusteriler.Items.Clear();
            
            foreach (Musteri m in MusteriDB.tumMusterileriCek(aranan, kriter))
            {
                ListViewItem lvItem = new ListViewItem(m.MusteriID.ToString());
                lvItem.SubItems.Add(m.Ad);
                lvItem.SubItems.Add(m.Soyad);
                lvItem.SubItems.Add(m.TelefonNo);
                lvItem.SubItems.Add(m.Puan.ToString());
                lvItem.SubItems.Add(m.KayitTarihi.ToShortDateString());

                lvItem.Tag = m;

                //grup belirleme
                if (lvMusteriler.Groups[m.Oncelik.OncelikID.ToString()] == null)
                {
                    lvMusteriler.Groups.Add(m.Oncelik.OncelikID.ToString(),m.Oncelik.Ad);
                    lvMusteriler.Groups[m.Oncelik.OncelikID.ToString()].Tag = 0;
                }
                
                
                lvItem.Group = lvMusteriler.Groups[m.Oncelik.OncelikID.ToString()];
                    
                    if (((int)lvMusteriler.Groups[m.Oncelik.OncelikID.ToString()].Tag) % 2 == 1)
                        lvItem.BackColor = Color.LightSalmon;
                    
                lvMusteriler.Groups[m.Oncelik.OncelikID.ToString()].Tag= ((int)lvMusteriler.Groups[m.Oncelik.OncelikID.ToString()].Tag)+1;
                

                lvMusteriler.Items.Add(lvItem);
            }

        }

        private void ekleToolStripButton_Click(object sender, EventArgs e)
        {
            yeniKayit = true;
            temizle();
            gbxInput.Enabled = true;
        }

        private void lvMusteriler_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvMusteriler.SelectedItems.Count > 0)
            {
                Musteri seciliMusteri = lvMusteriler.SelectedItems[0].Tag as Musteri;
                txtMAdi.Text = seciliMusteri.Ad;
                txtMSoyad.Text = seciliMusteri.Soyad;
                cmbOncelik.SelectedItem = seciliMusteri.Oncelik;
                txtTelNo.Text = seciliMusteri.TelefonNo;
            }
            else
            {
                temizle();
                gbxInput.Enabled = false;
            }

        }

        private void guncelleToolStripButton_Click(object sender, EventArgs e)
        {
            gbxInput.Enabled = true;
            yeniKayit = false;
        }

        private void silToolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (lvMusteriler.SelectedItems.Count == 0)
                    throw new Exception("Hiçbir kayıt seçmediniz.");

                DialogResult result = MessageBox.Show(null, (lvMusteriler.SelectedItems[0].Tag as Musteri).MusteriID + " numaralı müşteriyi silmek istediğinizden emin misiniz?", "Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                    (lvMusteriler.SelectedItems[0].Tag as Musteri).sil();

                lvDoldur("",-1);
                temizle();
                gbxInput.Enabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 3, "Müşteri İşlemleri");
            }
        }

        private void txtMusteriArama_Click(object sender, EventArgs e)
        {
            txtMusteriArama.Text = "";
            txtMusteriArama.ForeColor = Color.Coral;
        }

        private void txtMusteriArama_TextChanged(object sender, EventArgs e)
        {
            lvDoldur(txtMusteriArama.Text, filtreStripComboBox.SelectedIndex);
        }

        private void btnTemizle_Click(object sender, EventArgs e)
        {
            temizle();
            gbxInput.Enabled = false;
        }
        private void temizle()
        {
            txtMAdi.Text = "";
            txtMSoyad.Text = "";
            if (cmbOncelik.Items.Count > 0)
                cmbOncelik.SelectedIndex = 0;

            lvMusteriler.SelectedItems.Clear();
            txtTelNo.Text = "";
        }

        private void btnSec_Click(object sender, EventArgs e)
        {
            try
            {
                Musteri musteri = lvMusteriler.SelectedItems[0].Tag as Musteri;
                rezervasyonIslemleri.musteri = musteri;
                this.Close();
            }
            catch (Exception)
            {
                MessageBox.Show(null, "Hiçbir müsteri seçmediniz!", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

    }
}
